import { httpsApi, wxauthApi, shareApi, wxauthbaseApi} from '@/api/app';
import { useUserStore } from '@/stores/user';
import { ElMessage } from 'element-plus';
import { isMobile } from '@/utils/util';
export const isWeChat = window.navigator.userAgent.toLowerCase().includes('micromessenger'); // 是否是微信环境

export const redirectToWeChatLogin = async (scope:string = 'snsapi_base')  => {
  localStorage.setItem('wxauth_type', scope);
  const config = await shareApi({url: httpsApi});
  const wechatAuthUrl = `https://open.weixin.qq.com/connect/oauth2/authorize?`;
  const huitiao = httpsApi+'/';
  const url = `${wechatAuthUrl}appid=${config.appId}&redirect_uri=${encodeURIComponent(huitiao)}&response_type=code&state=&scope=${scope}&state=STATE#wechat_redirect`;
  // alert('url----'+url )
  window.location.href = url;
}
// 获取code
export const isWeChatLogin = () => {
  const url = new URL(window.location.href);// 获取当前页面的 URL
  const code = url.searchParams.get("code"); // 使用 URLSearchParams 获取 code 参数
  if(!code) return;
  const userStore = useUserStore();
  let pageLoadElement = document.getElementById('page_load');
  if (pageLoadElement) {
    pageLoadElement.style.display = 'flex';
  }
  const wxauthApiFun = localStorage.getItem('wxauth_type') === "snsapi_base" ? wxauthbaseApi : wxauthApi;
  // 首先无感将路由地址改成不带参数的 然后再执行分享流程
  const newUrl = window.location.origin + window.location.pathname;
  window.history.replaceState({}, '', newUrl);
  setTimeout(()=>{
    wxShare();
    wxauthApiFun({code}).then((res:any)=>{
      if (pageLoadElement) {
        pageLoadElement.style.display = 'none';
      }
      loginOk(res)
      console.log('微信授权登录成功后---------',res.mobile,  userStore.token);
      if(res && !res.mobile){
        userStore.setLoginShow('2'); // 弹出绑定手机号界面
      }else{
        ElMessage.success('登录成功~')
      }
    }).catch((err)=>{
      
    })
    
  },100)
}
export const weChatLogin = () => {
  const userStore = useUserStore();
  // if(userStore.isLogin) return;
  const str = window.location.search.split(/[\?\/]|code=|&/);
  const url = new URL(window.location.href);// 获取当前页面的 URL
  const code = url.searchParams.get("code"); // 使用 URLSearchParams 获取 code 参数
  const snsapi_userinfo = localStorage.getItem('wxauth_type') === 'snsapi_userinfo'; // 获取用户信息
  console.log('登录--------code----------------------', code, str, isWeChat)
  if( code && isWeChat && (!userStore.isLogin ||  snsapi_userinfo) ){
    isWeChatLogin()
  }else if(!code && isWeChat && !userStore.isLogin){
    redirectToWeChatLogin();
  }
  if(userStore.isLogin && !code){
    wxShare();
  }
}


export const loginShow = () => {
  const userStore = useUserStore();
  if(isWeChat && !userStore.isLogin){
    weChatLogin();
    return false;
  }else if(!userStore.isLogin){
    userStore.setLoginShow('1');
    return false;
  }else{
    return true;
  }
}
export const loginOk = (res:any) => {
  const userStore = useUserStore();
  userStore.login(res.token);
  userStore.setUser(res); // 存储用户信息
  userStore.setLoginShow('0');
}

// 按钮是否需要授权登录
export const linkToPath = (path:any) => {
  // return true;
  const userStore = useUserStore();
  const paths = ['/my', '/talk', '/product/list'];
  const haved = paths.find(n => path.includes(n))
  if(!isWeChat && isMobile && !userStore.isLogin){ // 非微信环境 - 手机端 - 走pc端登录流程
    userStore.setLoginShow('1'); 
    return false;
  }else if( haved && !userStore.isLogin && isWeChat){ // 微信环境 - 未登录 - 进行微信授权登录
    redirectToWeChatLogin()
    return false;
  }else if( haved && !userStore.mobile && isWeChat){ // 微信环境 - 没有手机号 - 弹出绑定手机号
    userStore.setLoginShow('2');
    return false;
  }else{
    return true;
  }
}

// 分享设置逻辑
export  const wxShare = async () => {
  try {
    
    // 调用后端接口获取微信 JS-SDK 配置
    // alert('分享009'+window.location.href)
    shareApi({url: window.location.origin}).then((res:any) => {
      const config = {
        debug: false,
        appId: res.appId, // 必填，公众号的唯一标识
        timestamp: res.timestamp, // 必填，生成签名的时间戳
        nonceStr: res.nonceStr, // 必填，生成签名的随机串
        signature: res.signature, // 必填，签名，见附录1
        jsApiList: res.jsApiList
      }
      const title = res.title || '合肥高新区巾帼星火AI创梦';
      const desc = res.desc || '合肥高新区巾帼星火AI创梦';
      const image = res.image || '';
      const url = res.url || window.location.origin;
      // console.log("config--------------111111111111", config, jWeixin, title, desc, image, url);
      if(!jWeixin) return;
      // 初始化微信 JS-SDK
      jWeixin.config(config);
      jWeixin.ready(() => {
        // console.log('微信 JS-SDK 初始化成功');
        // 自定义分享给朋友的卡片数据
        jWeixin.updateAppMessageShareData({
          title: title, // 分享标题
          desc: desc, // 分享描述
          link: url, // 分享链接
          imgUrl: image, // 分享图标
          success: () => {
            // console.log('分享给朋友的卡片数据设置成功');
          },
          cancel: (e) => {
            console.log("失败" + JSON.stringify(e));
          }
        });
      
        // 自定义分享到朋友圈的卡片数据
        jWeixin.updateTimelineShareData({
          title: title, // 分享标题
          link: url, // 分享链接
          imgUrl: image, // 分享图标
          success: () => {
            // console.log('分享到朋友圈的卡片数据设置成功');
          },
        });
      });
      
      jWeixin.error((err) => {
        // console.error('微信 JS-SDK 配置失败:', err);
      });
    })
    
  } catch (error) {
    // console.error('初始化微信分享功能失败:', error);
  }
}

